Communications across networks today typically rely on reliable protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP). As illustrated in FIG. 1, to establish a connection between a client and server using a reliable protocol, the client sends synchronization packet 105 to the server. The contents of synchronization packet 105 contain little more than a source address (the client's Internet Protocol (IP) address) and port, a destination address and port (the server's IP address), a sequence number, and a flag identifying the packet as a synchronization packet. The server responds with synch/acknowledgment packet 110, which has both the synchronization and acknowledgment flags set, includes its own sequence number, and uses the successor to the client's sequence number as its acknowledgment number. The client follows that up with acknowledgment packet 115, which has the acknowledgment flag set, uses the client's next sequence number, and uses the successor to the server's sequence number as the client's acknowledgment number. In the body of acknowledgment packet 115, the client includes the data request for the first time. At this point, the server may process the request, which takes some time (shown as processing interval 117). Finally, the server responds with response 120.
This three message connection mechanism, including synchronization packet 105, synch/acknowledgment packet 110, and acknowledgment packet 115, is known colloquially as a handshake. The handshake lets both parties (that is, the client and server) know that the other is aware of the connection by the use of their respective sequence numbers. The client knows that the server recognizes the connection, because the server has acknowledged the synchronization request and included the successor to the client's sequence number in the packet. And the server knows that the client recognizes the connection, because the client used the successor to the server's sequence number. This makes the connection reliable. Other reliable protocols, while differing in specifics, still rely on some sort of interchange between the client and server before data begins to flow between the two.
Because data does not start to flow in connections established by reliable protocols until after the handshake, some time is lost between when the source party knows it needs the data and when the source party may begin to receive the data. For example, notice interval 125. This is the interval from when the server first received synchronization packet 105 and when the server began processing the request (after receiving acknowledgment packet 115 with the data request). Because the connection is not established until the handshake is complete, the time during which the handshake is performed is wasted.
In contrast to reliable protocols, there are various unreliable protocols. Although they differ in specifics, they share the property that data begins to flow in the first packet sent by either party. But because the source party may not be sure that the requests will be received or recognized by the destination party, the source party might not receive an answer.